Artificial neural networks are computing systems with an architecture based on biological neural networks. Artificial neural networks can be trained, using training data, to learn about how to perform a certain computing task.
A neural network may include a set of processing elements. Each processing element can process a portion of the input data to generate an output, and the final decision can be generated based on a combination of the outputs of the set of the processing elements. As part of the processing, each processing element can perform a set of arithmetic operations such as, for example, floating-point multiplications and additions, etc. A neural network may be implemented by circuitries and data paths, such as a systolic array, which comprises an array of processing elements capable of performing concurrent arithmetic operations. The utilization rate of a systolic array, as well as the speed of processing, may depend on how the systolic array is mapped to the inputs and outputs of the neural network layer.